package com.xueqiu.movieplaymanagersystem.utils;

import java.time.LocalDate;
import java.time.temporal.WeekFields;
import java.util.Calendar;
import java.util.Date;

/**
 * @author xueqiu
 */
public class DateUtils {

    /**
     * 获取一个日期 date 是一周中的第几天
     *
     * @param date 传入日期
     * @return 传入日期是一周中的第几天；字符串
     */
    public static String weekOfMonth(Date date) throws Exception {
        //获取一个当前时区下的 Calendar 对象，为 “cal”
        Calendar cal = Calendar.getInstance();
        //星期天为索引0，星期六为索引6
        String[] weekDays = {"7", "1", "2", "3", "4", "5", "6"};
        //将该cal对象的时间设置为传入的 date 日期
        cal.setTime(date);
        //获取当前日期是一周中的第几天，星期天为第一天，星期六为第七天
        //将获取到的值减1，数值上就等同于weekDays数组的索引
        int index = cal.get(Calendar.DAY_OF_WEEK) - 1;
        //健壮性判断
        if (index < 0 || index > 6) {
            index = 0;
        }
        return weekDays[index];
    }

    /**
     * 获取当前日期是当前年中的第几星期
     * 星期数从1开始计数
     *
     * @return 当前日期是当前年中的第几星期；字符串
     */
    public static String weekOfYear() {
        //使用了Java8中的时间API，获取当前本地日期，
        LocalDate localDate = LocalDate.now();
        //通过weekFields指定ISO标准的一周天数
        WeekFields weekFields = WeekFields.ISO;
        //获取该日期所在一年中的星期数
        int weekNumber = localDate.get(weekFields.weekOfWeekBasedYear());
        return String.valueOf(weekNumber);
    }
}
